Skip to content

미스키 즐겨찾기 기능 및 플랫폼별 북마크 분리 구현#178

Merged
deholic merged 4 commits intomainfrom
feature/misskey-favorite-toast
Jan 18, 2026
Merged

미스키 즐겨찾기 기능 및 플랫폼별 북마크 분리 구현#178
deholic merged 4 commits intomainfrom
feature/misskey-favorite-toast

Conversation

@deholic
Copy link
Copy Markdown
Owner

@deholic deholic commented Jan 18, 2026

Summary

미스키 게시물 즐겨찾기 기능을 구현하고, 플랫폼별 즐겨찾기/북마크 기능을 분리하여 사용자 경험을 개선했습니다.

🎯 주요 기능

  • 미스키: 즐겨찾기(favorites) 기능만 사용
  • 마스토돈: 북마크(bookmarks) 기능만 사용
  • 토스트 알림: 즐겨찾기 추가/취소 시 피드백 제공
  • 로딩 상태: 버튼 표시 개선 및 즉시 메뉴 닫기

🔧 기술 구현

  • API 연동: notes/state API로 실시간 즐겨찾기 상태 확인
  • 플랫폼 분리: 각 플랫폼에 맞는 API만 허용
  • UI 개선: 로딩 상태 표시 및 비활성화 처리
  • 에러 처리: 실패 시 적절한 토스트 알림 제공

📱 사용자 경험

  • 즐겨찾기 버튼이 갑자기 나타나는 현상 해결
  • 메뉴 클릭 시 즉시 닫기로 반응성 개선
  • 로딩 상태 표시로 자연스러운 전환 효과

🔍 변경 파일

  • src/infra/ : API 클라이언트 플랫폼별 분리
  • src/ui/components/TimelineItem.tsx : UI 개선 및 토스트 연동

Test Plan

  • 미스키 게시물 즐겨찾기 추가 기능 확인
  • 미스키 게시물 즐겨찾기 취소 기능 확인
  • 마스토돈 게시물 북마크 기능 확인
  • 플랫폼별 적절한 버튼만 표시되는지 확인
  • 토스트 알림 정상 표시 확인
  • 로딩 상태 및 즉시 메뉴 닫기 동작 확인

opencode added 4 commits January 18, 2026 20:28
## 주요 변경사항

### API 레이어
- `fetchNoteState` API 메소드 추가 (MastodonHttpClient, MisskeyHttpClient, UnifiedApiClient)
- `MastodonApi` 인터페이스에 `fetchNoteState` 선언 추가
- MisskeyHttpClient의 즐겨찾기/취소 로직 수정 (리액션 → 순수 즐겨찾기 API)
- 누락된 북마크 관련 메소드 구현

### UI 기능
- TimelineItem 더보기 메뉴에 즐겨찾기/취소 버튼 추가
- 메뉴 열 때 notes/state API로 즐겨찾기 상태 실시간 확인
- 즐겨찾기 성공/실패 시 토스트 알림 표시
- 상태별 적절한 API 호출 (create/delete)

### 기능 개선
- 즐겨찾기 상태 로컬 관리로 불필요한 API 호출 방지
- 마스토돈/미스키 통합 API 동작
- 정확한 즐겨찾기 취소 API 호출 (delete 사용)

### 수정된 이슈
- 즐겨찾기 시 좋아요(리액션)이 아닌 즐겨찾기로 동작
- 즐겨찾기 취소 시 delete API 사용
- API 호출 실패 시 에러 처리 및 토스트 알림
## 주요 변경사항

### API 레이어 분리
- 마스토돈: 즐겨찾기(favourite) 기능 비활성화
  - favourite(), unfavourite() 에러 throw
  - 북마크(bookmark) 기능만 유지
- 미스키: 북마크 기능 비활성화
  - bookmark(), unbookmark(), fetchBookmarks() 에러 throw
  - 즐겨찾기(favourite) 기능만 유지

### UI 플랫폼별 분기
- TimelineItem 더보기 메뉴에서 플랫폼별 버튼 표시
  - 미스키: "즐겨찾기/즐겨찾기 취소" 버튼만 표시
  - 마스토돈: "북마크/북마크 취소" 버튼만 표시
- handleMenuToggle: 미스키에서만 fetchNoteState 호출

### 기능 개선
- 플랫폼에 맞는 기능만 제공으로 사용자 혼란 방지
- API 레벨에서 플랫폼별 기능 제한으로 일관성 확보
- 토스트 알림은 각 플랫폼에 맞게 표시

이제 미스키는 즐겨찾기만, 마스토돈은 북마크만 사용할 수 있습니다.
## 주요 변경사항

### UI 개선
- 즐겨찾기 버튼을 항상 표시하되 API 응답 전까지 비활성화 상태
- 로딩 중 "로딩..." 텍스트 표시로 사용자 피드백 제공
- disabled 상태로 API 응답 대기 중 클릭 방지

### 사용자 경험 향상
- 메뉴 열 때: 즐겨찾기 버튼이 "로딩..."으로 즉시 표시
- API 응답 후: 실제 상태(추가/취소)로 버튼 활성화
- 버튼 클릭 시: 메뉴 즉시 닫기로 딜레이 문제 해결

### 기능 개선
- handleMenuToggle에서 상태 리셋 로직 추가
- API 실패 시 기본값 false로 설정하여 안정성 확보
- 비동기 처리로 UI 반응성 개선

이제 즐겨찾기 버튼이 갑자기 나타나는 현상 없이 자연스러운 로딩 상태를 제공합니다.
## 주요 변경사항

### 토스트 톤 수정
- App.tsx: 북마크 추가/취소 토스트를 성공 상태(tone: "success")로 변경
- ProfileModal.tsx: 북마크 추가/취소 토스트를 성공 상태(tone: "success")로 변경

### 기능 개선
- 기존 일반 토스트에서 초록색 성공 토스트로 변경
- 즐겨찾기 토스트와 일관된 성공 피드백 제공
- 중복 토스트 문제 해결 및 TimelineItem 코드 정리

### 사용자 경험
- 북마크 성공 시 시각적으로 명확한 성공 피드백 제공
- 일관된 톤으로 사용자 경험 향상
- 안정적인 토스트 동작 보장
@deholic deholic self-assigned this Jan 18, 2026
@deholic deholic added the enhancement New feature or request label Jan 18, 2026
@deholic deholic added this to the v0.13.0 milestone Jan 18, 2026
@deholic deholic merged commit 4bb95bf into main Jan 18, 2026
1 check passed
@deholic deholic deleted the feature/misskey-favorite-toast branch January 18, 2026 11:46
@deholic deholic restored the feature/misskey-favorite-toast branch January 18, 2026 11:49
@deholic deholic removed this from the v0.13.0 milestone Jan 18, 2026
@deholic deholic deleted the feature/misskey-favorite-toast branch January 18, 2026 11:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant